package com.test.wog.dao;

import com.test.wog.bean.Node;

import java.util.List;

/**
 * 关键节点的DAO层接口
 *
 * @author linxun@buaa.edu.cn
 * @since 2020-01-26
 * @see Node
 */
public interface NodeDAO {
    /**
     * 根据名称从数据库中查询关键节点
     *
     * @param name 节点名称，如：延庆汽车站
     * @return 名字为name的所有关键节点
     */
    List<Node> getNodeByName(String name);

    /**
     * 根据ID从数据库中查询关键节点
     *
     * @param id 节点编号
     * @return 编号为id的关键节点
     */
    Node getNodeByID(int id);

    /**
     * 根据类型从数据库中查询关键节点
     *
     * @param type 节点类型，如：airport
     * @return 类型为type的所有关键节点
     */
    List<Node> getNodeByType(String type);

    /**
     * 获取全部关键节点
     *
     * @return 所有关键节点
     */
    List<Node> getAllNode();

    /**
     * 根据输入经纬度从数据库中找出最近的关键节点
     *
     * @param lon 经度
     * @param lat 纬度
     * @return 根据经纬度所查找到的节点
     */
    List<Node> getNodeByLoc(double lon, double lat);

    /**
     * 根据输入经纬度从高德地图API中查询POI
     *
     * @param lon 经度
     * @param lat 纬度
     * @return 查询到的POI
     */
    List<Node> getNodeByLocFromAmap(double lon, double lat);

    /**
     * 根据POI名称从高德地图查询POI
     *
     * @param name POI名称
     * @return 名称为name的全部节点
     */
    List<Node> getNodeByNameFromAmap(String name);//根据名称从高德获取POI

    /**
     * 插入关键节点
     *
     * @return 插入数量
     */
    int insertNode();
}
